using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

enum ETypes
{
    friendlyPlayer = 0, monster=1, npc=2, item=3, currentPlayer=4, enemyPlayer=5, environmentEntity=6
}

enum EStates
{
    docile=0,irritated=1,angry=2,enraged=3,confused=4,scared=5,terrified=6
}

/// <summary>
/// Summary description for GameEntity
/// </summary>
[Serializable]
public class GameEntity:ICloneable
{
    /// <summary>
    /// Name is what is displayed to the user
    /// </summary>
    private string name;
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    /// <summary>
    /// The reference to the item in our list of game entities
    /// </summary>
    private int id;
    public int ID
    {
        get { return id; }
        set { id = value; }
    }

    private int EType;
    public int eType
    {
        get{ return EType;}
        set{ EType = value;}
    }

    // This is the character that gets displayed for this entity
    private string EChar;
    public string eChar
    {
        get { return EChar; }
        set { EChar = value; }
    }


    private int x;
    public int X{
        get { return x; }
        set { x = value; }
    }

    private int y;
    public int Y
    {
        get { return y; }
        set { y = value; }
    }

    private int mapNum;
    public int MapNum
    {
        get { return mapNum; }
        set { mapNum = value;}
    }

    /// <summary>
    /// The default constructor initializes the members required for addition of the entity to the game world
    /// </summary>
    /// <param name="id"></param>
    /// <param name="name"></param>
    /// <param name="x"></param>
    /// <param name="y"></param>
    /// <param name="eChar"></param>
    /// <param name="MapNum"></param>
    /// <param name="eType"></param>
	public GameEntity(int id, string name, int x, int y, string eChar, int MapNum, int eType)
	{
        // Initialize members
        ID = id;
        Name = name;
        X = x;
        Y = y;
        EChar = eChar;
	    EType = eType;
	    mapNum = MapNum;
	}

    public GameEntity()
    {
        // Parameterless constructor required for serialization
    }

    public object Clone()
    {
        GameEntity mc = this.MemberwiseClone() as GameEntity;
        return mc;
    }
}
